﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Sql;
using System.Data.Common;
using System.Data.SqlClient;
using System.Collections;
using System.Data;

namespace sccf
{
    public partial class GestionarUsuarios : System.Web.UI.Page
    {
        DataTable Users= new DataTable();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Vars.Usuario == null)
                Response.Redirect("Login.aspx");
            if (!IsPostBack)
            {
                Users = GestionarUsuariosController.buscarLDAP();
                Session.Add("usuarios", Users);
                GridView1.DataSource = Users;
                GridView1.DataBind();                
            }
            else
                Users = (DataTable)Session["usuarios"];
        }
   
        /// <summary>
        /// Variables globales 
        /// </summary>    
        int tipo = 0;
        int adjuntar = 1;
        SqlDataReader result = null;

        #region REGISTRAR USUARIO

        /// <summary>
        /// Metodo buscar para "Registrar Usuarios": obtiene los usuarios deseados
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Boton1_Click(object sender, EventArgs e)
        {
            
            DataRow[] foundrow;
            DataTable result = new DataTable();
            result = Users.Clone();
            if (RadioButtonList1.SelectedItem == null)
            {
                WebMsgBox.Show("No seleccionó el tipo de busqueda (Id o Nombre)");
            }
            else if (RadioButtonList1.SelectedIndex==0)
            {

                foundrow = Users.Select("Nombre Like '%" + texto_busqueda.Text+ "%'");
                foreach (DataRow user in foundrow)
                {
                    result.ImportRow(user);
                }

              //  result = GestionarUsuariosController.buscar(texto_busqueda.Text, RadioButtonList1.SelectedItem.Text);
                GridView1.DataSource = result;
                GridView1.DataBind();

            }
            else if (RadioButtonList1.SelectedIndex == 1)
            {
                foundrow = Users.Select("Login Like '%" + texto_busqueda.Text + "%'");
                foreach (DataRow user in foundrow)
                {
                    result.ImportRow(user);
                }
            }
            GridView1.DataSource = result;
            GridView1.DataBind();
        }

        /// <summary>
        /// Registrar los cambios al nuevo usuario obtenido del LDAP 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (RadioButtonList2.SelectedItem.Text == "Administrador")
            {
                tipo = 1;
            }
            else if (RadioButtonList2.SelectedItem.Text == "Asistente de Consejo")
            {
                tipo = 2;
            }
            else if (RadioButtonList2.SelectedItem.Text == "Miembro de Consejo")
            {
                tipo = 3;
            }
            else
            {
                WebMsgBox.Show("No seleccionó el Tipo de usuario a asignar");
            }

            foreach (GridViewRow grd_Row in this.GridView1.Rows)
            {
                adjuntar++;
                //obtenemos cada checkbox por fila del Gridview
                CheckBox chk_Publicar = ((CheckBox)GridView1.Rows[grd_Row.RowIndex].FindControl("myCheckBox"));

                if (chk_Publicar.Checked)
                {
                    //si el checkbox está seleccionado agregamos ese usuario a la base de datos
                    GestionarUsuariosController.Registrar(grd_Row.Cells[1].Text, grd_Row.Cells[2].Text, tipo, grd_Row.Cells[3].Text, grd_Row.Cells[4].Text, grd_Row.Cells[5].Text, grd_Row.Cells[6].Text);
                    WebMsgBox.Show("Usuario Registrado Correctamente");
                }

            }
            result = GestionarUsuariosController.buscar(texto_busqueda.Text, RadioButtonList1.SelectedItem.Text);
            GridView1.DataSource = result;
            GridView1.DataBind();
        }
        #endregion

        #region ELIMINAR USUARIO
        /// <summary>
        /// Boton para buscar usuarios en "Eliminar Usuario": Los obtenemos del LDAP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button2_Click(object sender, EventArgs e)
        {
            if (RBL_Busqueda.SelectedItem == null)
            {
                WebMsgBox.Show("No seleccionó el tipo de busqueda (Id o Nombre)");
            }
            else
            {
                result = GestionarUsuariosController.buscar(TextoBusqueda.Text, RBL_Busqueda.SelectedItem.Text);
                GVEliminar.DataSource = result;
                GVEliminar.DataBind();
            }
        }

        /// <summary>
        /// Boton de eliminar Usuarios de la base de datos: NO del LDAP
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button3_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow grd_Row in this.GVEliminar.Rows)
            {
                CheckBox chk_Publicar = ((CheckBox)GVEliminar.Rows[grd_Row.RowIndex].FindControl("myCheckBox"));

                if (chk_Publicar.Checked)
                {
                    // Obtenemos el Id del usuario que queremos eliminar
                    string id = grd_Row.Cells[1].Text;
                    GestionarUsuariosController.borrar(id);
                    WebMsgBox.Show("Usuario Eliminado Correctamente");

                }
            }
            result = GestionarUsuariosController.buscar(TextoBusqueda.Text, RBL_Busqueda.SelectedItem.Text);
            GVEliminar.DataSource = result;
            GVEliminar.DataBind();
        }

        #endregion
        
        #region MODIFICAR USUARIO

        /// <summary>
        /// Modificar Datos de Ususarios Existentes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button4_Click(object sender, EventArgs e)
        {
            if (RadioButtonList4.SelectedItem == null)
            {
                WebMsgBox.Show("No seleccionó el tipo de busqueda (Id o Nombre)");
            }
            else
            {
                result = GestionarUsuariosController.buscar(TextBox2.Text, RadioButtonList4.SelectedItem.Text);
                GridView3.DataSource = result;
                GridView3.DataBind();
            }
        }

        /// <summary>
        /// Evento de los checkbox del gridview para mostrar los datos en los campos abajo
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void chk_OnCheckedChanged(object sender, EventArgs e)
        {
            foreach (GridViewRow grd_Row in this.GridView3.Rows)
            {
                CheckBox chk_Publicar = ((CheckBox)GridView3.Rows[grd_Row.RowIndex].FindControl("myCheckBox"));

                if (chk_Publicar.Checked)
                {
                    TB_id.Text = grd_Row.Cells[1].Text;
                    TB_nombre.Text = grd_Row.Cells[2].Text;
                    Tb_cargo.Text = grd_Row.Cells[5].Text;
                    Tb_email.Text = grd_Row.Cells[3].Text;
                    Tb_email2.Text = grd_Row.Cells[4].Text;
                }
            }
        }

        /// <summary>
        /// Para modificar los datos que hemos cambiado del usuario seleccionado
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Boton_Modificar_Click(object sender, EventArgs e)
        {
            result = GestionarUsuariosController.modificar(TB_id.Text, TB_nombre.Text, Tb_cargo.Text, Tb_email.Text, Tb_email2.Text);
            result = GestionarUsuariosController.buscar(TextBox2.Text, RadioButtonList4.SelectedItem.Text);
            GridView3.DataSource = result;
            GridView3.DataBind();
            TB_id.Text = ""; TB_nombre.Text = ""; Tb_cargo.Text = ""; Tb_email.Text = ""; Tb_email2.Text = "";
            WebMsgBox.Show("Usuario Modificado Correctamente");
        }
        #endregion
    }
}